package com.shundr.shipper.user.http;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONException;
import org.json.JSONObject;

import com.shundr.shipper.cargo.model.CargoInfo;
import com.shundr.shipper.common.model.CheckInfo;
import com.shundr.shipper.common.model.InviteInfo;
import com.shundr.shipper.common.util.JsonUtil;
import com.shundr.shipper.user.model.CompanyInfo;
import com.shundr.shipper.user.model.CreditsDetailInfo;
import com.shundr.shipper.user.model.IntegralInfo;
import com.shundr.shipper.user.model.RecordInfo;
import com.shundr.shipper.user.model.UserInfo;

/**
 * 用户解析公共类
 * UserParser
 * 
 * @author larry 2015-4-13 下午5:37:27 
 * @version 1.0.0
 *
 */
public class UserParser {

	/**
	 * 解析登录成功
	 * parserUserInfo(这里用一句话描述这个方法的作用)
	 * (这里描述这个方法适用条件 – 可选)
	 * @param data
	 * @return
	 * UserInfo
	 * @exception
	 * @since  1.0.0
	 */
	public static Map<String, Object> parserUserInfo(String data) {
		try {
			Map<String, Object> map = new HashMap<String, Object>();
			JSONObject obj = new JSONObject(data);
			String accessToken = obj.getString("accessToken");
			UserInfo info = JsonUtil.fromJson(obj.getJSONObject("user").toString(), UserInfo.class);
			map.put("user", info);
			map.put("token", accessToken);
			return map;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 解析用户信息
	 * @param data
	 * @return
	 * @throws JSONException
	 */
	public static UserInfo parserUserInfos(String data){
		try {
			UserInfo infos = JsonUtil.fromJson(data, UserInfo.class);
			return infos;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new UserInfo();
	}
	
	/**
	 * 解析电话号码
	 * @param data
	 * @return
	 * @throws JSONException
	 */
	public static CargoInfo parserCargoInfo(String data){
		try {
			CargoInfo infos = JsonUtil.fromJson(data, CargoInfo.class);
			return infos;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new CargoInfo();
	}
	
	/**
	 * 解析认证信息
	 * @param data
	 * @return
	 * @throws JSONException
	 */
	public static String parserUserStatus(String data){
		try {
			JSONObject obj = new JSONObject(data);
			String idValiStatus=obj.getString("idValiStatus");
			return idValiStatus;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "";
	}
	
	/**
	 * 解析用户详情信息
	 * parserUserDetailInfo(这里用一句话描述这个方法的作用)
	 * (这里描述这个方法适用条件 – 可选)
	 * @param data
	 * @return
	 * UserDetailInfo
	 * @exception
	 * @since  1.0.0
	 */
	public static UserInfo parserUserDetailInfo(String data){
		try {
			UserInfo info = JsonUtil.fromJson(data, UserInfo.class);
			return info;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 企业认证信息
	 * parserCompanyInfo(这里用一句话描述这个方法的作用)
	 * (这里描述这个方法适用条件 – 可选)
	 * @param data
	 * @return
	 * CompanyInfo
	 * @exception
	 * @since  1.0.0
	 */
	public static CompanyInfo parserCompanyInfo(String data){
		try {
			CompanyInfo info = JsonUtil.fromJson(data, CompanyInfo.class);
			return info;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 我的积分记录
	 * parserIntegralList(这里用一句话描述这个方法的作用)
	 * (这里描述这个方法适用条件 – 可选)
	 * @param data
	 * @return
	 * List<IntegralInfo>
	 * @exception
	 * @since  1.0.0
	 */
	public static List<IntegralInfo> parserIntegralList(String data) {
		try {
			List<IntegralInfo> infos = JsonUtil.getList(data, IntegralInfo.class);
			return infos;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new ArrayList<IntegralInfo>();
	}
	
	/**
	 * 积分详情
	 * parserCreditsDetail(这里用一句话描述这个方法的作用)
	 * (这里描述这个方法适用条件 – 可选)
	 * @param data
	 * @return
	 * CreditsDetailInfo
	 * @exception
	 * @since  1.0.0
	 */
	public static CreditsDetailInfo parserCreditsDetail(String data){
		try {
			CreditsDetailInfo info = JsonUtil.fromJson(data, CreditsDetailInfo.class);
			return info;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 红包信息
	 * parserCheckInfo(这里用一句话描述这个方法的作用)
	 * (这里描述这个方法适用条件 – 可选)
	 * @param data
	 * @return
	 * CheckInfo
	 * @exception
	 * @since  1.0.0
	 */
	public static CheckInfo parserCheckInfo(String data){
		try {
			CheckInfo info = JsonUtil.fromJson(data, CheckInfo.class);
			return info;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 我的邀请列表
	 * parserInviteList(这里用一句话描述这个方法的作用)
	 * (这里描述这个方法适用条件 – 可选)
	 * @param data
	 * @return
	 * List<InviteInfo>
	 * @exception
	 * @since  1.0.0
	 */
	public static List<InviteInfo> parserInviteList(String data) {
		try {
			List<InviteInfo> infos = JsonUtil.getList(data, InviteInfo.class);
			return infos;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new ArrayList<InviteInfo>();
	}
	
	/**
	 * 申请记录
	 * parserExchangeList(这里用一句话描述这个方法的作用)
	 * (这里描述这个方法适用条件 – 可选)
	 * @param data
	 * @return
	 * List<RecordInfo>
	 * @exception
	 * @since  1.0.0
	 */
	public static List<RecordInfo> parserExchangeList(String data) {
		try {
			List<RecordInfo> infos = JsonUtil.getList(data, RecordInfo.class);
			return infos;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new ArrayList<RecordInfo>();
	}
	
	

}
